# 大小写转换
s1 = 'HelloWorld'
s2 = s1.upper()
print(s1, s2)

s3 = s1.lower()
print(s1, s3)

# 分隔
email = 'xzystudio@sohu.com'
list1 = email.split('@')
print('邮箱名：', list1[0], '域名：', list1[1])

# 统计某个字符出现的次数
print(s1.count('o'))

# 检索操作
print(s1.find('o'))
print(s1.find('x'))  # -1 代表没有找到，不会报错

print(s1.index('o'))
# print(s1.index('x'))  # 会报错

# 以 ** 开头，结尾
print('demo.py'.endswith('.py'))
print('demo.txt'.endswith('.txt'))

print(s1.startswith('H'))
print(s1.startswith('p'))

# 替换,第三个参数是替换次数，默认是全部替换
s4 = s1.replace('o', '好', 2)
print(s4)

# 在指定的宽度范围内居中
print(s1.center(20, '*'))

# 去掉字符串的空格
s = '  h  ell   o w  o e ld      '
# print(s.strip())  # 去掉字符串左右的空格
# print(s.lstrip())  # 去掉字符串左侧的空格
# print(s.rstrip())  # 去掉字符串右侧的空格

# 去掉指定的字符（与顺序无关）
print(s1.strip('ld'))

# 格式化字符串
name = '梅梅'
age = 18
score = 99.5
print('姓名：%s,年龄：%d,成绩：%.1f' % (name, age, score))

# f-string
print(f'姓名：{name},年龄：{age},成绩:{score}')

# .format()方法
print('姓名：{0}，年龄：{1}，成绩：{2}'.format(name, age, score))
print('姓名：{2}，年龄：{2}，成绩：{1}'.format(name, age, score))

# 左右，居中对齐
print('{0:*<20}'.format(s1))  # < 左对齐  * 填充符
print('{0:*>20}'.format(s1))  # > 右对齐  * 填充符
print('{0:*^20}'.format(s1))  # ^ 居中对齐  * 填充符

print(format('hello', '<20'))  # < 左对齐  没有 填充符
print(format('hello', '>20'))  # > 右对齐  没有 填充符
print(format('hello', '^20'))  # ^ 居中对齐  没有 填充符

# 千位分隔符（适用于整数、浮点数）
print('{0:,}'.format(789465461321))
print('{0:,}'.format(789465461.321))

# 浮点数小数部分的精度
print('{0:.2f}'.format(3.1415926))

# 字符串类型最大的显示长度
print('{0:.5}'.format('helloworld'))

a = 456
print('二进制：{0:b},十进制：{0:d},八进制：{0:o},十六进制：{0:x},'.format(a))

b = 3.1415926
print('{0:.2f},{0:.2E},{0:.2e},{0:.2%},'.format(b))
